package com.hlkj.pay.vo.openapi.fund.req;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.hlkj.framework.common.valid.EnumValid;
import com.hlkj.pay.enums.MerchantEnum;
import com.hlkj.pay.vo.BaseReq;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* 商户进件结算表
* @TableName t_merchant_access_card
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class OpenApiFundAccountCardReq extends BaseReq {
    /**
    * 账号类型 0：对公账户 1：对私法人账户 2：对私非法人账户
    */
    @NotNull(message="账号类型 不能为空")
    @Schema(description ="结算信息-账号类型 0：对公账户 1：对私法人账户 2：对私非法人账户")
    @EnumValid(value = MerchantEnum.CARD_TYPE.class,message = "账号类型 无效")
    private Integer type;
    /**
    * 账号名称
    */
    @Schema(description ="账号名称")
    @NotEmpty(message="结算信息-账号名称 不能为空")
    private String name;
    /**
    * 账号code
    */
    @Schema(description ="银行账号")
    @NotEmpty(message="结算信息-银行账号 不能为空")
    private String cardNo;
    /**
    * 银行编码
    */
    @Schema(description ="银行编码  字典接口通过 dictKey=bankCode 获取")
    private String bankCode;
    /**
     * 银行名称
     */
    @Schema(description ="银行名称")
    private String bankName;
    /**
    * 联行号
    */
    @Schema(description ="联行号")
    private String branchCode;
    /**
    * 省份编码
    */
    @Schema(description ="省份编码 省份编码 字典接口通过 dictKey=bankCityCode,dictLevel=1 获取")
    @NotEmpty(message="结算信息-省份编码 不能为空")
    private String provinceCode;
    /**
    * 城市编码
    */
    @Schema(description ="城市编码 字典接口通过 dictKey=bankCityCode,parentDictKey=provinceCode,dictLevel=2 获取 ")
    @NotEmpty(message="结算信息-城市编码 不能为空")
    private String cityCode;
    /**
    * 区域编码
    */
    @Schema(description ="区域编码 字典接口通过 dictKey=bankCityCode,parentDictKey=cityCode,dictLevel=3 获取 ")
    @NotEmpty(message="结算信息-区域编码 不能为空")
    private String areaCode;
    /**
    * 银行卡绑定手机号
    */
    @Schema(description ="银行卡绑定手机号")
    private String cardPhone;
    @NotNull(message="[结算周期]不能为空")
    @Schema(description ="结算周期 1:D0-当天 2:D1-下一个自然日 3:T1-下一个工作日 4:手动结算")
    @EnumValid(value = MerchantEnum.SETTLE_CYCLE.class,message = "结算周期 无效")
    private Integer settleCycle;

}
